package cn.shop.dys.dao;

import android.content.Context;

import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.exception.DbException;

import java.util.ArrayList;
import java.util.List;

import cn.shop.dys.bean.CartProInDB;


/**
 * 购物车 - 数据库
 * Created by Administrator on 2016/4/20.
 */
public class CartDao {

    private static DbUtils dbUtils;

    public static void init(Context context, String DBName) {
        dbUtils = DbUtils.create(context, DBName);
    }

    /**
     * 通过userId在数据库中查找所有数据
     * @param userId
     * @return
     */
    public static List<CartProInDB> findAll(String userId) {
        List<CartProInDB> mCartDataInfos = new ArrayList<>();
        try {
            List<CartProInDB> cartDatatInfos = dbUtils.findAll(CartProInDB.class);
            if (cartDatatInfos != null) {
                for (CartProInDB cartDataInfo : cartDatatInfos) {
                    if (cartDataInfo.getUserJid().equals(userId)) {
                        mCartDataInfos.add(cartDataInfo);
                    }
                }
            }
        } catch (DbException e) {
            e.printStackTrace();
            return mCartDataInfos;
        }
        return mCartDataInfos;
    }

    /**
     * 向数据库增加一个商品信息,若果重复，只增加数量
     * @param mCartDataInfo
     */
    public static boolean add(CartProInDB mCartDataInfo) {
        try {
            List<CartProInDB> mCartDataInfos = findAll(mCartDataInfo.getUserJid());
            if (mCartDataInfos != null) {
                for (CartProInDB cartDataInfo : mCartDataInfos) {
                    if (cartDataInfo.getProductId() == mCartDataInfo.getProductId()
                            && mCartDataInfo.getProductProperty()
                            .equals(cartDataInfo.getProductProperty())&&cartDataInfo.getUserJid().equals(mCartDataInfo.getUserJid())) {

                        mCartDataInfo.setProductNum(cartDataInfo.getProductNum()
                                + mCartDataInfo.getProductNum());

                        dbUtils.delete(cartDataInfo);
                        break;
                    }
                }
            }
            dbUtils.save(mCartDataInfo);
            return true;
        } catch (DbException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 从数据库删除一个商品信息
     * @param mCartDatatInfo
     */
    public static boolean remove(CartProInDB mCartDatatInfo) {
        try {
            dbUtils.delete(mCartDatatInfo);
            return true;
        } catch (DbException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 通过userId和proId从数据库删除一个商品信息
     * @param userId
     * @param proId
     */
    public static boolean remove(String userId, int proId) {
        try {
            List<CartProInDB> cartDataInfos = findAll(userId);
            if (cartDataInfos != null) {
                for (CartProInDB cartDataInfo : cartDataInfos) {
                    if (cartDataInfo.getProductId() == proId && cartDataInfo.getUserJid().equals(userId)) {
                        dbUtils.delete(cartDataInfo);

                        return true;
                    }
                }
            }
        } catch (DbException e) {
            e.printStackTrace();
            return false;

        }
        return false;
    }

}
